package br.com.salao.model;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;

import br.com.salao.bean.Estabelecimento;
import br.com.salao.bean.EtapasConfiguracaoEstabelecimento;
import br.com.salao.bean.GerencEtapaConfigEstabelecimento;
import br.com.salao.dao.GerencEtapasConfEstabDaoImpl;
import br.com.salao.util.JpaUtil;

public class GerencEtapasConfiguracaoEstabelecimentoModel {

	private EntityManager em;
	private List<GerencEtapaConfigEstabelecimento> listGerencEtapaConfigEstab;
	private GerencEtapaConfigEstabelecimento gerencEtapaConfigEstabelecimento;
	private List<EtapasConfiguracaoEstabelecimento> listaEtapasConfiguracaoEstab;

	public GerencEtapasConfiguracaoEstabelecimentoModel(){
		init();
	}

	public void init() {
		em = JpaUtil.getEntityManager();
		listarEtapasConfEstabelecimento();

	}


	public List<GerencEtapaConfigEstabelecimento> buscarGerencEtapaConfigEstabPorIdEstabelecimento(int idEstabelecimento){
		GerencEtapasConfEstabDaoImpl dao = new GerencEtapasConfEstabDaoImpl(em);
		return dao.buscarGerencEtapaConfigEstabPorIdEstabelecimento(idEstabelecimento);			
	}



	public List<GerencEtapaConfigEstabelecimento> inserirEtapasPorEstab(Estabelecimento estabelecimento, int idEtapaConfiguracao){

		List<GerencEtapaConfigEstabelecimento> list = new ArrayList<GerencEtapaConfigEstabelecimento>();
		try{

			for(EtapasConfiguracaoEstabelecimento ece : listaEtapasConfiguracaoEstab){

				//GerencEtapasConfiguracaoEstabelecimentoModel model = new GerencEtapasConfiguracaoEstabelecimentoModel();				
				gerencEtapaConfigEstabelecimento = new GerencEtapaConfigEstabelecimento();

				gerencEtapaConfigEstabelecimento.setEtapaConfiguracao(ece);

				if(ece.getNumetapa() == idEtapaConfiguracao){
					gerencEtapaConfigEstabelecimento.setEtapaConcluida(true);
				}else{
					gerencEtapaConfigEstabelecimento.setEtapaConcluida(false);
				}

				gerencEtapaConfigEstabelecimento.setEstabelecimento(estabelecimento);				

				GerencEtapasConfEstabDaoImpl dao = new GerencEtapasConfEstabDaoImpl(em);
				GerencEtapaConfigEstabelecimento etapasConfiguracaoPorEstabelecimento = dao.inserir(gerencEtapaConfigEstabelecimento);

				list.add(etapasConfiguracaoPorEstabelecimento);				
			}
			return list;	
		}catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public boolean updateEtapasPorEstab(Estabelecimento estabelecimento, int idEtapaConfiguracao){

		List<GerencEtapaConfigEstabelecimento> listEtapaConf = buscarGerencEtapaConfigEstabPorIdEstabelecimento(estabelecimento.getId());

		try{	
		
			for(GerencEtapaConfigEstabelecimento configEstabelecimento : listEtapaConf){
				
				if(configEstabelecimento.getEtapaConfiguracao().getNumetapa() == idEtapaConfiguracao){
					configEstabelecimento.setEtapaConcluida(true);					
				}	
				
				GerencEtapasConfEstabDaoImpl dao = new GerencEtapasConfEstabDaoImpl(em);
				dao.update(configEstabelecimento);
			}
			
	
		}catch (Exception e) {
			e.printStackTrace();
			return false;
		}

		return true;
	}

	public void listarEtapasConfEstabelecimento(){
		EtapasConfiguracaoEstabelecimentoModel model = new EtapasConfiguracaoEstabelecimentoModel();
		listaEtapasConfiguracaoEstab = model.listar();
	}	

	public GerencEtapaConfigEstabelecimento getGerencEtapaConfigEstabelecimento() {
		return gerencEtapaConfigEstabelecimento;
	}

	public void setGerencEtapaConfigEstabelecimento(
			GerencEtapaConfigEstabelecimento gerencEtapaConfigEstabelecimento) {
		this.gerencEtapaConfigEstabelecimento = gerencEtapaConfigEstabelecimento;
	}

	public List<GerencEtapaConfigEstabelecimento> getListGerencEtapaConfigEstab() {
		return listGerencEtapaConfigEstab;
	}

	public void setListGerencEtapaConfigEstab(
			List<GerencEtapaConfigEstabelecimento> listGerencEtapaConfigEstab) {
		this.listGerencEtapaConfigEstab = listGerencEtapaConfigEstab;
	}

	public List<EtapasConfiguracaoEstabelecimento> getListaEtapasConfiguracaoEstab() {
		return listaEtapasConfiguracaoEstab;
	}

	public void setListaEtapasConfiguracaoEstab(
			List<EtapasConfiguracaoEstabelecimento> listaEtapasConfiguracaoEstab) {
		this.listaEtapasConfiguracaoEstab = listaEtapasConfiguracaoEstab;
	}
}
